Non-volatile memory continues to increase capacity by increasing the number of program states to which memory cells/locations can be programmed. For example, NAND flash memory is available as single-level cell (SLC) in which one bit is stored per memory cell, multi-level cell (MLC) in which two bits are stored per memory cell, triple-level cell (TLC) in which three bits are stored per memory cell. However, increasing the number of available program states may increase error rates and shorten the longevity of the data storage system. Decoding operations such as non-binary LDPC extends the longevity of the non-volatile memory, but at a high complexity cost.